/**   
* @Title: WechatService.java 
* @Package com.leesche.zcsp.node.pay.wecha.service 
* @Description:() 
* @author dennies yang
* @date 2016年10月9日 下午7:26:59 
* @version V1.0   
*/
package com.leesche.zcsp.node.pay.wecha.service;

import com.leesche.zcsp.node.pay.wecha.data.AccessToken;
import com.leesche.zcsp.node.pay.wecha.data.Message;
import com.leesche.zcsp.node.pay.wecha.data.Oauth2To;
import com.leesche.zcsp.node.pay.wecha.data.WechatJsToken;
import com.leesche.zcsp.node.pay.wecha.data.XmlParam;
import com.leesche.zcsp.node.web.model.ServOrder;

/**   
* @Title: WechatService.java 
* @Package com.leesche.zcsp.node.pay.wecha.service 
* @Description:() 
* @author dennies yang
* @date 2016年10月9日 下午7:26:59 
* @version V1.0   
*/
public interface  WechatService {
	
	/***
	 * 
	* @Title: getOauth 
	* @Description: TODO(通过网页授权机制传入code获取用户信息) 
	* @param @param code
	* @param @return   
	* @return Message<Oauth2To>   
	* @throws
	 */
    Message<Oauth2To>  getOauth(String code);
	/***
	 * 
	* @Title: getWechatRedirectUrl 
	* @Description: TODO(获取页面跳转界面) 
	* @param @param url
	* @param @return   
	* @return String   
	* @throws
	 */
    String  getWechatRedirectUrl(String url);

	String  getWechatRedirectUrlSino(String url);
	
	/***
	 * 
	* @Title: prePay 
	* @Description: TODO(微信预支付) 
	* @param @param order
	* @param @param ip
	* @param @param openid
	* @param @return   
	* @return Message<String>   
	* @throws
	 */
    Message<String> prePay(ServOrder order, String ip, String openid, String tradeType);
	
	/***
	 * 
	* @Title: WechatNotify 
	* @Description: TODO(微信回调方法) 
	* @param @param xmlParam
	* @param @return   
	* @return Message<String>   
	* @throws
	 */
    Message<String> WechatNotify(XmlParam xmlParam);

	
	/***
	 * 
	* @Title: onScan 
	* @Description: TODO(扫码支付返回) 
	* @param @param nonceStr 
	* @param @param message  预支付下订单返回信息
	* @param @return   
	* @return XmlParam   
	* @throws
	 */
    XmlParam onScan(String nonceStr, Message<String> message, String encode) ;
	
	/***
	 * 
	* @Title: getWechatAccessToken 
	* @Description: TODO(获取token) 
	* @param @return   
	* @return Message<AccessToken>   
	* @throws
	 */
    Message<AccessToken> getWechatAccessToken();
	/***
	 * 
	* @Title: getWechatJsToken 
	* @Description: TODO(获取JSToken) 
	* @param @param accessToken
	* @param @return   
	* @return Message<WechatJsToken>   
	* @throws
	 */
    Message<WechatJsToken> getWechatJsToken(String accessToken);
	/***
	 * 
	* @Title: refreshWechatAccessToken 
	* @Description: TODO(刷新微信ACCESSTOKEN) 
	* @param @return   
	* @return Message<AccessToken>   
	* @throws
	 */
    Message<AccessToken> refreshWechatAccessToken();
	/***
	 * 
	* @Title: refreshWechatJsToken 
	* @Description: TODO(刷新微信JSTOKEN) 
	* @param @return   
	* @return Message<AccessToken>   
	* @throws
	 */
    Message<WechatJsToken> refreshWechatJsToken();
	
	/***
	 * 
	* @Title: wechattransfers 
	* @Description: TODO(微信取现操作) 
	* @param @param ip  <用户体现值>
	* @param @param openid 用户微信公众号唯一标示
	* @param @param money  提取现金以分为单位
	* @param @param desc   体现描述 
	* @param @param encode 编码
	* @param @param orderno 订单号
	* @param @return   
	* @return Message<String>   
	* @throws
	 */
    Message<String>   wechattransfers(String ip, String openid, int money, String desc, String encode, String orderNo);
	
	
	
	

}
